var lex = exports.lex;

var context = exports.context;

var syntax = exports.syntax;


( function( ){

	/**
	 * 处理HTML中的符号显示
	 */
	function format( text ){
		return text.replace( /&/g, "&amp;" ).replace( / /g, "&nbsp;" ).replace( /</g, "&lt;" ).replace( />/g, "&gt;" );
	}

	/**
	 * 行内输出
	 */
	function inline( text ){
		document.getElementById( "output" ).innerHTML += format( text );
	}

	/**
	 * 块输出
	 */
	function block( text ){
		// 每行一个<p>
		var ss = text.split( "\n" );
		var i = 0;
		for(i in ss){
			document.getElementById( "output" ).innerHTML += "<p>"+format( ss[i] )+"</p>";
		}
	}

	/**
	 * 读输入文本
	 */
	function read( ){
		return document.getElementById( "input" ).value;
	}

	window.run = function( ){
		// 测试lex
		var ss = lex( read( ) );
		var cc = context( );
		var i = 0;
		for(i in ss){
			// 输出结果
			block( ss[i].type+": < "+ss[i].ctnt+" > @ < "+ss[i].row+" , "+ss[i].col+" >" );

			// 测试context
			if(ss[i].type=="id"){
				cc.addCtx( ss[i].ctnt, "token" );
			}
			else if(ss[i].type=="mark"&&ss[i].ctnt=="{"){
				cc.incLayer( );
			}
			else if(ss[i].type=="mark"&&ss[i].ctnt=="}"){
				cc.decLayer( );
			}
			block( "find result: "+cc.findCtx( "ss" ) );
			block( "find result: "+cc.findCtx( "block" ) );
		}
	};

} )( );